diff --git a/tools/env/fw_env.h b/tools/env/fw_env.h
index 78c803c..060eea5 100644
--- a/tools/env/fw_env.h
+++ b/tools/env/fw_env.h
@@ -94,7 +94,6 @@
  */
 int fw_parse_script(char *fname, struct env_opts *opts);
 
-
 /**
  * fw_env_open() - read enviroment from flash into RAM cache
  *
@@ -151,7 +150,6 @@
  */
 int fw_env_close(struct env_opts *opts);
 
-
 /**
  * fw_env_version - return the current version of the library
  *
diff --git a/tools/envcrc.c b/tools/envcrc.c
index 550f310..0905180 100644
--- a/tools/envcrc.c
+++ b/tools/envcrc.c
@@ -48,7 +48,6 @@
 
 #define ENV_SIZE (CONFIG_ENV_SIZE - ENV_HEADER_SIZE)
 
-
 #ifdef ENV_IS_EMBEDDED
 # include <env_internal.h>
 extern unsigned int env_size;
diff --git a/tools/fdtgrep.c b/tools/fdtgrep.c
index f1ff194..037176b 100644
--- a/tools/fdtgrep.c
+++ b/tools/fdtgrep.c
@@ -102,7 +102,6 @@
 		fprintf(fout, "\033[1;%dm", col + 30);
 }
 
-
 /**
  * value_add() - Add a new value to our list of things to grep for
  *
diff --git a/tools/gdb/remote.c b/tools/gdb/remote.c
index 3cd0421..f17bb06 100644
--- a/tools/gdb/remote.c
+++ b/tools/gdb/remote.c
@@ -45,7 +45,6 @@
 #endif
 #endif /* alloca not defined.  */
 
-
 #include "serial.h"
 #include "error.h"
 #include "remote.h"
@@ -313,7 +312,6 @@
 		 ? (REGISTER_BYTES * 2 + 32) \
 		 : 400)
 
-
 /* This variable sets the number of bytes to be written to the target
    in a single packet.  Normally PBUFSIZ is satisfactory, but some
    targets need smaller values (perhaps because the receiving end
diff --git a/tools/imagetool.h b/tools/imagetool.h
index a766aa2..57be608 100644
--- a/tools/imagetool.h
+++ b/tools/imagetool.h
@@ -256,7 +256,6 @@
  * for ex. default_image.c, fit_image.c
  */
 
-
 void pbl_load_uboot(int fd, struct image_tool_params *mparams);
 int zynqmpbif_copy_image(int fd, struct image_tool_params *mparams);
 int imx8image_copy_image(int fd, struct image_tool_params *mparams);
diff --git a/tools/img2srec.c b/tools/img2srec.c
index 75efd76..5a6d325 100644
--- a/tools/img2srec.c
+++ b/tools/img2srec.c
@@ -109,7 +109,6 @@
   return getPtr;
 } /* ExtractDecimal */
 
-
 static void ExtractNumber (uint32_t* value,  char* getPtr)
 {
   bool  neg = false;
@@ -129,7 +128,6 @@
   if (neg) *value = -(*value);
 } /* ExtractNumber */
 
-
 static uint8_t* ExtractWord(uint16_t* value, uint8_t* buffer)
 {
   uint16_t x;
@@ -139,7 +137,6 @@
   return buffer;
 } /* ExtractWord */
 
-
 static uint8_t* ExtractLong(uint32_t* value, uint8_t* buffer)
 {
   uint32_t x;
@@ -151,14 +148,12 @@
   return buffer;
 } /* ExtractLong */
 
-
 static uint8_t* ExtractBlock(uint16_t count, uint8_t* data, uint8_t* buffer)
 {
   while (count--) *data++ = *buffer++;
   return buffer;
 } /* ExtractBlock */
 
-
 static char* WriteHex(char* pa, uint8_t value, uint16_t* pCheckSum)
 {
   uint16_t  temp;
@@ -173,7 +168,6 @@
   return pa;
 }
 
-
 static char* BuildSRecord(char* pa, uint16_t sType, uint32_t addr,
 			  const uint8_t* data, int nCount)
 {
@@ -223,7 +217,6 @@
   return pa;
 }
 
-
 static void ConvertELF(char* fileName, uint32_t loadOffset)
 {
   FILE*         file;
@@ -240,7 +233,6 @@
   char          srecLine[128];
   char		*hdr_name;
 
-
   /* open file */
   if ((file = fopen(fileName,"rb")) == NULL) {
     fprintf (stderr, "Can't open %s: %s\n", fileName, strerror(errno));
@@ -348,7 +340,6 @@
   fclose(file);
 } /* ConvertELF */
 
-
 /*************************************************************************
 |  MAIN
 |*************************************************************************/
diff --git a/tools/imx8mimage.c b/tools/imx8mimage.c
index 939f829..d60d293 100644
--- a/tools/imx8mimage.c
+++ b/tools/imx8mimage.c
@@ -5,7 +5,6 @@
  * Peng Fan <peng.fan@nxp.com>
  */
 
-
 #include "imagetool.h"
 #include <image.h>
 #include "imximage.h"
diff --git a/tools/imximage.c b/tools/imximage.c
index 2df4c7d..467d9f2 100644
--- a/tools/imximage.c
+++ b/tools/imximage.c
@@ -793,7 +793,6 @@
 	return dcd_len;
 }
 
-
 static int imximage_check_image_types(uint8_t type)
 {
 	if (type == IH_TYPE_IMXIMAGE)
@@ -1057,7 +1056,6 @@
 	return pad_len;
 }
 
-
 /*
  * imximage parameters
  */
diff --git a/tools/kwbimage.c b/tools/kwbimage.c
index 4dce495..d1cbced 100644
--- a/tools/kwbimage.c
+++ b/tools/kwbimage.c
@@ -804,7 +804,6 @@
 	return 0;
 }
 
-
 static int kwb_dump_fuse_cmds_38x(FILE *out, struct secure_hdr_v1 *sec_hdr)
 {
 	struct hash_v1 kak_pub_hash;
diff --git a/tools/mxsimage.c b/tools/mxsimage.c
index ead61d0..42df069 100644
--- a/tools/mxsimage.c
+++ b/tools/mxsimage.c
@@ -2058,7 +2058,6 @@
 	return ret;
 }
 
-
 static int sb_build_tree_from_img(struct sb_image_ctx *ictx)
 {
 	long filesize;
